﻿Ext.define("App.View.Socios.FormSocio", {
    extend: "App.Config.Abstract.Form",
    //    title: "Datos de Orden de Trabajo",
    cargarStores: true,
    columns: 2,
    gridPrincipal : null,
    initComponent: function () {
        var me = this;
        me.CargarComponentes();
       
        me.cargarEventos();
        this.callParent(arguments);
         Funciones.BloquearFormularioReadOnly(me , ["ID_SOCIO1"],"botones");
    },
    CargarComponentes: function () {
        var me = this;

        me.store_socio = Ext.create('App.Store.Socios.Socios');

        me.cbx_socio = Ext.create("App.Config.Componente.ComboAutoBase", {
            fieldLabel: "Bucar Socio",
            name: "ID_SOCIO1",
            displayField: 'NRO_SOCIO',
            valueField : 'ID_SOCIO',
            store: me.store_socio,
            textoTpl : function () { return "Nro Socio :{NRO_SOCIO} - {NOMBRE} {APELLIDO_PATERNO} {APELLIDO_MATERNO}" }
        });

        me.toolbar = Funciones.CrearMenuBar();
        Funciones.CrearMenu('btn_Crear', 'Crear Socio', Constantes.ICONO_CREAR, me.EventosForm, me.toolbar, this);
        Funciones.CrearMenu('btn_Editar', 'Modificar Socio', Constantes.ICONO_EDITAR, me.EventosForm, me.toolbar, this, null, true);
        Funciones.CrearMenu('btn_Baja', 'Baja Socio', Constantes.ICONO_BAJA, me.EventosForm, me.toolbar, this, null, true);
        me.toolbar.add(me.cbx_socio);
        me.formImagen = Ext.create('App.View.Socios.Forms', {
            opcion: 'FormImagen',
            colspan: 1,
            width : 240,
            height : 170,
            rowspan: 6,
            //solo cuando el evento esta fuera del formulario se envia el scope
            EventosForm : me.EventosForm,
            scope : me
        });
        me.txt_id = Ext.create("App.Config.Componente.TextFieldBase", {
            name: "ID_SOCIO",
            hidden: true,
        });
        me.num_nro_socio = Ext.create("App.Config.Componente.NumberFieldBase", {
            fieldLabel: "Nro Socio",
            name: "NRO_SOCIO",
            width: 240,
            maxLength: 7,
            allowNegative: false,
            allowDecimals: false,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.txt_nombre = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Nombres",
            name: "NOMBRE",
            width: 480,
            colspan : 2,
            maxLength: 200,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.txt_apellido_paterno = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Ap. Paterno",
            name: "APELLIDO_PATERNO",
            width: 240,
            maxLength: 200,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.txt_apellido_materno = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Ap. Materno",
            name: "APELLIDO_MATERNO",
            width: 240,
            maxLength: 200,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.num_nro_licencia = Ext.create("App.Config.Componente.NumberFieldBase", {
            fieldLabel: "Nro Lic.",
            name: "NRO_LICENCIA",
            width: 240,
            maxLength: 15,
            allowNegative: false,
            allowDecimals: false,
        });
        me.store_categoria_lic = Ext.create('App.Store.Listas.StoreLista');
        me.store_categoria_lic.setExtraParam('ID_LISTA', Lista.Buscar('CATEGORIA_LIC'));
        me.cbx_categoria_lic = Ext.create("App.Config.Componente.ComboBase", {
            fieldLabel: "Categoria Lic.",
            name: "CATEGORIA_LIC",
            width: 240,
            store : me.store_categoria_lic,
            selectOnFocus: true,
        });
        me.num_ci = Ext.create("App.Config.Componente.NumberFieldBase", {
            fieldLabel: "Carnet Identidad",
            name: "CI",
            width: 240,
            maxLength: 15,
            allowNegative: false,
            allowDecimals: false,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.store_expedido = Ext.create('App.Store.Listas.StoreLista');
        me.store_expedido.setExtraParam('ID_LISTA', Lista.Buscar('EXPEDIDO_CI'));
        me.cbx_expedido = Ext.create("App.Config.Componente.ComboBase", {
            fieldLabel: "Expedido",
            name: "EXPEDIDO",
            width: 240,
            store : me.store_expedido,
            selectOnFocus: true,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.dat_fecha_nac = Ext.create("App.Config.Componente.DateFieldBase", {
            opcion :"sin fecha",
            fieldLabel: "Fecha Nacimiento",
            name: "FECHA_NAC",
            width: 240,
//            colspan : 2,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.txt_domicilio = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Direccion Dom.",
            name: "DOMICILIO",
            width: 480,
            maxLength: 500,
            colspan : 2,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.txt_observacion = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Observaciones",
            name: "OBSERVACION",
            width: 480,
            maxLength: 500,
            colspan : 2,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.store_estado_civil = Ext.create('App.Store.Listas.StoreLista');
        me.store_estado_civil.setExtraParam('ID_LISTA', Lista.Buscar('ESTADO_CIVIL'));
        me.cbx_estado_civil = Ext.create("App.Config.Componente.ComboBase", {
            fieldLabel: "Estado Civil",
            name: "ESTADO_CIVIL",
            width: 240,
            store : me.store_estado_civil,
            selectOnFocus: true,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        
        me.txt_estado = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Estado",
            name: "ESTADO",
            width: 240,
            maxLength: 20,
        });
        me.dat_fecha_ingreso = Ext.create("App.Config.Componente.DateFieldBase", {
            opcion :"sin fecha",
            fieldLabel: "Fecha Ingreso",
            name: "FECHA_INGRESO",
            width: 240,
            afterLabelTextTpl: Constantes.REQUERIDO,
            allowBlank: false,
        });
        me.dat_fecha_baja = Ext.create("App.Config.Componente.DateFieldBase", {
            opcion :"sin fecha",
            fieldLabel: "Fecha Retiro",
            name: "FECHA_BAJA",
            width: 240,
            colspan : 2,
        });
         me.txt_telefono = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Telefonos",
            name: "TELEFONO",
            width: 480,
            colspan : 2 ,
            maxLength: 50,
        });
        me.txt_celular = Ext.create("App.Config.Componente.TextFieldBase", {
            fieldLabel: "Celular",
            name: "CELULAR",
            width: 240,
            maxLength: 50,
        });
        me.tbar = me.toolbar;

        me.CargarTabPanel();
        me.items = [
            me.formImagen ,
            me.txt_id,
            me.num_nro_socio,
            me.num_ci,
            me.cbx_expedido,
            me.txt_nombre,
            me.txt_apellido_paterno,
            me.txt_apellido_materno,
            me.cbx_estado_civil,
            me.num_nro_licencia,
            me.cbx_categoria_lic,
            
            me.dat_fecha_nac,
            me.txt_estado,
            me.dat_fecha_ingreso,
            me.dat_fecha_baja,
            me.txt_telefono,
            me.txt_celular,
            me.txt_domicilio,

            me.txt_observacion,
            me.tabPanel
            
        ];
    },
    CargarTabPanel : function(){
        var me = this;
        
        me.toolbarFamiliares = Funciones.CrearMenuBar();
        Funciones.CrearMenu('btn_CrearFamiliar', 'Crear', Constantes.ICONO_CREAR, me.EventosForm, me.toolbarFamiliares, this);
        Funciones.CrearMenu('btn_EditarFamiliar', 'Editar', Constantes.ICONO_EDITAR, me.EventosForm, me.toolbarFamiliares, this);
        Funciones.CrearMenu('btn_BajaFamiliar', 'Baja', Constantes.ICONO_BAJA, me.EventosForm, me.toolbarFamiliares, this);
        me.gridFamiliares = Ext.create("App.View.Socios.Grids",{
            opcion : 'GridFamiliares',
            height : 250,
            fbarmenu : me.toolbarFamiliares
        });

        me.toolbarDocumentos = Funciones.CrearMenuBar();
        Funciones.CrearMenu('btn_CrearDocumento', 'Crear', Constantes.ICONO_CREAR, me.EventosForm, me.toolbarDocumentos, this);
        Funciones.CrearMenu('btn_EditarDocumento', 'Editar', Constantes.ICONO_EDITAR, me.EventosForm, me.toolbarDocumentos, this);
        Funciones.CrearMenu('btn_BajaDocumento', 'Baja', Constantes.ICONO_BAJA, me.EventosForm, me.toolbarDocumentos, this);

        me.gridDocumentos = Ext.create("App.View.Socios.Grids",{
            opcion : 'GridDocumentos',
            height : 250,
            fbarmenu : me.toolbarDocumentos
        });

        me.toolbarDesempeno = Funciones.CrearMenuBar();
        Funciones.CrearMenu('btn_CrearDesempeno', 'Crear', Constantes.ICONO_CREAR, me.EventosForm, me.toolbarDesempeno, this);
        Funciones.CrearMenu('btn_EditarDesempeno', 'Editar', Constantes.ICONO_EDITAR, me.EventosForm, me.toolbarDesempeno, this);
        Funciones.CrearMenu('btn_BajaDesempeno', 'Baja', Constantes.ICONO_BAJA, me.EventosForm, me.toolbarDesempeno, this);
        me.gridDesempeno = Ext.create("App.View.Socios.Grids",{
            opcion : 'GridDesempenos',
            height : 250,
            fbarmenu : me.toolbarDesempeno
        });

        me.toolbarAntecedente = Funciones.CrearMenuBar();
        Funciones.CrearMenu('btn_CrearAntecedente', 'Crear', Constantes.ICONO_CREAR, me.EventosForm, me.toolbarAntecedente, this);
        Funciones.CrearMenu('btn_EditarAntecedente', 'Editar', Constantes.ICONO_EDITAR, me.EventosForm, me.toolbarAntecedente, this);
        Funciones.CrearMenu('btn_BajaAntecedente', 'Baja', Constantes.ICONO_BAJA, me.EventosForm, me.toolbarAntecedente, this);
        me.gridAntecedentes = Ext.create("App.View.Socios.Grids",{
            opcion : 'GridAntecedentes',
            height : 250,
            fbarmenu : me.toolbarAntecedente
        });

        me.tabPanel = Ext.create('Ext.tab.Panel',{
            width: 960,
            height: 300,
            colspan : 4,
            items : [
                me.gridFamiliares,
                me.gridDocumentos,
                me.gridDesempeno,
                me.gridAntecedentes
            ]
        });
    },
    cargarEventos : function(){
        var me = this;
        me.cbx_socio.on('select',function(cmb,record){
            me.loadRecord(record[0]);
            Funciones.BloquearFormularioReadOnly(me , ["ID_SOCIO1"],"botones");
            me.gridFamiliares.getStore().setExtraParams({ID_SOCIO : record[0].get('ID_SOCIO')});
            me.gridFamiliares.getStore().load();
        });
        me.txt_id.on('change',function(cmb,n,o){
             var disabled = n === "";
            Funciones.DisabledButton('btn_Editar', me.toolbar, disabled);
            Funciones.DisabledButton('btn_Baja', me.toolbar, disabled);


//            Funciones.CrearMenu('btn_Editar', 'Modificar Socio', Constantes.ICONO_EDITAR, me.EventosForm, me.toolbar, this, null, true);
//        Funciones.CrearMenu('btn_Baja', 'Baja Socio', Constantes.ICONO_BAJA, me.EventosForm, me.toolbar, this, null, true);
            
        });
    },
    EventosForm: function (btn) {
        var me = this;
        switch (btn.getItemId()) {
            case "btn_Crear":
                me.BotonesSocio(false);
                me.CrearSocio(true);
                
                break;
            case "btn_Editar":
                me.BotonesSocio(false);
                me.CrearSocio(false);
                
                break;
            case "btn_Crear_imagen":
                me.BotonesSocio(true);
                break;
            case "btn_Detalle":
                me.MostrarFormEgreso(false, true);
                break;
            case "btn_Eliminar":
                me.EliminarRegistro();
                break;
            case "btn_CrearFamiliar":
                me.CrearFamiliar();
                break;
            case "btn_EditarFamiliar":
                if (me.gridFamiliares.record != null){
                    me.CrearFamiliar(me.gridFamiliares.record);
                }
                else{
                    Ext.Msg.alert("Error","Seleccione un Registro...");
                }
                break;
            default:
                Ext.Msg.alert("Aviso", "No Existe el botton");
        }
    },
    CrearSocio : function(bool){
        var me = this;
        if(bool){
            me.getForm().reset();
        }
        Funciones.DesbloquearFormularioReadOnly(me,["FECHA_BAJA","ESTADO"],false);
        me.btn_guardar.on('click',me.GuardarSocio,me);
    },
    BotonesSocio : function(hidden){
        var me = this;
        if(hidden){
            me.btn_guardar.hide() ; 
            me.btn_limpiar.hide() ;
        }
        else{
            me.btn_guardar.show() ; 
            me.btn_limpiar.show() ;
        }
    },
    GuardarSocio : function(){
        var me = this;
        Funciones.AjaxRequestForm("Socios", "GuardarSocio", me, me, me.gridPrincipal, "Esta Seguro de Guardar Socio", null, me);
    },
    BloquearFormulario : function(result){
        var me = this;
        me.BotonesSocio(true);
        me.txt_id.setValue(result.id);
        Funciones.BloquearFormularioReadOnly(me , ["ID_SOCIO1"],"botones");
    },
    CrearFamiliar : function(record){
        var me = this;
        var win = Ext.create("App.Config.Abstract.Window",{botones : true});
        var form = Ext.create("App.View.Socios.Forms",{
            opcion : 'formFamiliar',
            botones :  false
        });
        if(record == null){
            form.txt_id_socio.setValue(me.txt_id.getValue());
        }
        else
        {
          form.loadRecord(record);
            
        }
        win.add(form);
        win.show();
        win.btn_guardar.on('click',function(){
            Funciones.AjaxRequestWin("Socios", "GuardarFamiliar", win, form, me.gridFamiliares, "Esta Seguro de Guardar", null, win);
        });
    }
});
